package gui;

import java.awt.event.ActionListener;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

/**rappresenta il menu che viene inserito nell'editor, comprendente di:
 * <ul>
 *  <li>menu FILE</li>
 * </ul>
 * 
 * @author Koldar
 * @version 1.2
 */
public class MapEditorMenuBar extends JMenuBar{

	private static final long serialVersionUID = -3860936548418649123L;
	
	private JMenu file;
	private JMenuItem newMap;
	private JMenuItem open;
	private JMenuItem save;
	private JMenuItem saveAs;
	private JMenuItem exit;
	
	/**costruisce una nuova MenuBar senza per� inserire alcun listener per i vari
	 * pulsanti presenti nel menu. Per quel obiettivo si pu� usare in seguito il
	 * metodo {@link #addMenuListener(ActionListener, ActionListener, ActionListener, ActionListener, ActionListener) addMenuListener}
	 * 
	 */
	public MapEditorMenuBar(){
		super();
		//creazione items
		this.file=new JMenu("File");
		this.newMap=new JMenuItem("New Map");
		this.open=new JMenuItem("Open Map...");
		this.save=new JMenuItem("Save Map");
		this.saveAs=new JMenuItem("Save Map as...");
		this.exit=new JMenuItem("Exit");
		//creazione menus
		this.file.add(newMap);
		this.file.add(open);
		this.file.add(save);
		this.file.add(saveAs);
		this.file.add(exit);
		//creazione menubar
		this.add(file);
	}
	/**aggiunge i listener necessari per ascoltare correttamente il menu dell'editor
	 * 
	 * @param newmap indica la classe che deve ascoltare il pulsante {@link #newMap} del menu
	 * @param open indica la classe che deve ascoltare il pulsante  {@link #open} del menu
	 * @param save indica la classe che deve ascoltare il pulsante  {@link #save} del menu
	 * @param saveas indica la classe che deve ascoltare il pulsante {@link #saveAs} del menu
	 * @param exit indica la classe che deve ascoltare il pulsante {@link #exit} del menu
	 */
//	public void addMenuListener(Wirable<JMenuItem> newmap,Wirable<JMenuItem> open,Wirable<JMenuItem> save,Wirable<JMenuItem> saveas,Wirable<JMenuItem> exit){
//		newmap.wire(this.newMap);
//		open.wire(this.open);
//		save.wire(this.save);
//		saveas.wire(this.saveAs);
//		exit.wire(this.exit);
//	}

	/**
	 * @return the file. For further information visit {@link #file}
	 */
	public JMenu getFile() {
		return file;
	}

	/**
	 * @return the newMap. For further information visit {@link #newMap}
	 */
	public JMenuItem getNewMap() {
		return newMap;
	}

	/**
	 * @return the open. For further information visit {@link #open}
	 */
	public JMenuItem getOpen() {
		return open;
	}

	/**
	 * @return the save. For further information visit {@link #save}
	 */
	public JMenuItem getSave() {
		return save;
	}

	/**
	 * @return the saveAs. For further information visit {@link #saveAs}
	 */
	public JMenuItem getSaveAs() {
		return saveAs;
	}

	/**
	 * @return the exit. For further information visit {@link #exit}
	 */
	public JMenuItem getExit() {
		return exit;
	}
	
	

}
